package com.yxq.mdt.app.modules.login.model;


import com.yxq.mdt.app.base.RespBase;
import com.yxq.mdt.app.modules.login.bean.UserBean;
import com.yxq.mdt.app.net.API;

import io.reactivex.Observable;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;

/**
 * 北国风光，千里冰封，万里雪飘。
 * <p>
 * 望长城内外，惟余莽莽；大河上下，顿失滔滔。
 * <p>
 * 山舞银蛇，原驰蜡象，欲与天公试比高。
 * <p>
 * 须晴日，看红装素裹，分外妖娆。
 * <p>
 * 江山如此多娇，引无数英雄竞折腰。
 * <p>
 * 惜秦皇汉武，略输文采；唐宗宋祖，稍逊风骚。
 * <p>
 * 一代天骄，成吉思汗，只识弯弓射大雕。
 * <p>
 * 俱往矣，数风流人物，还看今朝。
 */
public interface LoginApi {

    /**
     * 账号密码登陆
     */
    @POST(API.HOST_BASE_URL + "api/passport/login-app")
    @FormUrlEncoded
    Observable<RespBase<String>> login(@Field("phone") String phone, @Field("password") String password);

    /**
     * 验证码登陆
     */
    @POST(API.HOST_BASE_URL + "api/passport/login-app-code")
    @FormUrlEncoded
    Observable<RespBase<String>> loginCode(@Field("phone") String phone, @Field("sms_code") String password);

    /**
     * 发送验证码
     */
    @GET(API.HOST_BASE_URL + "api/passport/verifycode")
    Observable<RespBase<String>> verifyCode(@Query("phone") String phone, @Query("sms_sce") int sms_sce);

    /**
     * 更换绑定手机号发送验证码
     */
    @POST(API.HOST_BASE_URL + "api/user/user-hand-binding")
    @FormUrlEncoded
    Observable<RespBase<String>> bindVerifyCode(@Field("content") String phone, @Field("access_token") String access_token);

    /**
     * 更换绑定手机号
     */
    @POST(API.HOST_BASE_URL + "api/user/user-empower")
    @FormUrlEncoded
    Observable<RespBase<String>> updateBindPhone(@Field("phone") String phone, @Field("phone_code") String sms_code, @Field("bind_type") int password, @Field("access_token") String token);

    /**
     * 注册
     */
    @POST(API.HOST_BASE_URL + "api/passport/register")
    @FormUrlEncoded
    Observable<RespBase<String>> register(@Field("phone") String phone, @Field("password") String password, @Field("password2") String password2, @Field("platform") int platform, @Field("sms_code") String sms_code, @Field("parent_id") String parent_user_id);

    /**
     * 找回密码
     */
    @POST(API.HOST_BASE_URL + "api/passport/forget")
    @FormUrlEncoded
    Observable<RespBase<String>> forget(@Field("phone") String phone, @Field("password") String password, @Field("password2") String password2, @Field("platform") int platform, @Field("sms_code") String sms_code);

    /**
     * app端第三方登录
     */
    @GET(API.HOST_BASE_URL + "api/passport/login-app3")
    Observable<RespBase<String>> loginApp3(@Query("openid") String openid, @Query("nickname") String nickname, @Query("avatar_url") String avatar_url, @Query("type") String type);

    /**
     * app端第三方登录后的手机绑定
     */
    @POST(API.HOST_BASE_URL + "api/passport/login-binding")
    @FormUrlEncoded
    Observable<RespBase<String>> bindPhone(@Field("phone") String phone, @Field("password") String password, @Field("token") String token, @Field("sms_code") String sms_code);

    /**
     * 绑定微信
     */
    @POST(API.HOST_BASE_URL + "api/user/user-wechat")
    @FormUrlEncoded
    Observable<RespBase<String>> bindWechat(@Field("wechat_app") String wechat_app, @Field("access_token") String access_token, @Field("nickname") String nickname, @Field("avatar_url") String avatar_url);

}
